//
//  WBWelComeView.swift
//  WinsonWeibo
//
//  Created by Administrator on 2017/4/24.
//  Copyright © 2017年 Winson. All rights reserved.
//

import UIKit
import SDWebImage

class WBWelComeView: UIView {

    @IBOutlet weak var iconView: UIImageView!
    @IBOutlet weak var tipLabel: UILabel!

    @IBOutlet weak var iconBottomConstrains: NSLayoutConstraint!

    class func welcomeView() -> WBWelComeView {

        let nib = UINib(nibName: "WBWelComeView", bundle: nil)
        let v = nib.instantiate(withOwner: nil, options: nil)[0] as! WBWelComeView

        v.frame = UIScreen.main.bounds

        return v
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        // 提示：initWithCoder 只是刚刚从 XIB 的二进制文件中将视图数据加载完成
        // 还没有和代码连线建立起关系，所有开发时，千万不要在这个方法中处理UI
    }


    override func awakeFromNib() {

        // 1. url
        guard let urlString = WBNetworkManager.shared.userAccount.avatar_large,
            let url = URL(string: urlString) else {
                return
        }



        // 2. 设置图像 - 如果网络图像没有下载完成，先显示占位图
        // 露如果不指定占位图，之前设置的图像会被清空
        iconView.sd_setImage(with: url, placeholderImage: UIImage(named: "avatar_default_big"))

        // 3. keyPath 设置圆角
        iconView.layer.cornerRadius = iconView.bounds.width * 0.5
        iconView.layer.masksToBounds = true
    }

    /// 自动布局系统更新完成后，会自动调用此方法
    /// 通常是对子视图布局进行修改
//    override func layoutSubviews() {
//
//    }

    /// 视图被添加到window上， 表示视图已经显示
    override func didMoveToWindow() {
        super.didMoveToWindow()

        // 视图是使用制动布局来设置的，只是设置了约束
        // - 当视图被添加到窗口上，根据父视图的大小，计算约束值，更新控件的位置
        // - layoutIfNeed 会直接按照当前的约束值直接更新控件位置
        // - 执行之后，控件所在的位置，就是 XIB 中布局的位置
        iconBottomConstrains.constant = bounds.height - 200

        // Swift 3.1 有出入
        // self.layoutIfNeeded()

        // 如果控件们的 frame 还没有计算好，所有的约束会一起动画
        UIView.animate(withDuration: 1.0,
                       delay: 0,
                       usingSpringWithDamping: 0.7,
                       initialSpringVelocity: 0,
                       options: [],
                       animations: {
                        // 更新约束
                        self.layoutIfNeeded()
        }) { (_) in
            UIView.animate(withDuration: 1.0, animations: { 
                self.tipLabel.alpha = 1
            }, completion: { (_) in
                self.removeFromSuperview()
            })
        }
    }
}
